<?php
/**
 * デバッグプラグインオン
 */ 
Controller_Plugin_DebugAbstract::changeEnable(false);
Controller_Plugin_Debug_JsAbstract::changeEnable(false);

/**
 * デバッグログ
 * 
 * @param mixed $expression
 * @return void
 */
function dlog($expression)
{
	ob_start();
	foreach (func_get_args() as $var) {
		var_dump($var);
	}
	
	$ret = ob_get_contents();
	ob_end_clean();
	
	$log = File_Logger::getInstance('debug');
	$log->write($ret);
}

/**
 * 田中用デバッグ関数
 *
 * @param mixed $expression
 * @ignore
 */
function dmp($expression)
{
	if(!_DEBUG)return;
	
	foreach (func_get_args() as $var) {
		if (@class_exists('Zend_Debug', true)) {
			Zend_Debug::dump($var);
		}
		else {
			echo '<pre>';
			var_dump($var);
			echo '</pre>';
		}
	}
}

/**
 * 田中用
 * ベンチマーク測るクラス簡易版
 * @author tanaka
 * @package benchmark
 */
class Benchmark
{
	/** @var float */
	protected $_start = null;

	/** @var Benchmark */
	private static $_instance;

	/** @return Benchmark */
	public static function getInstance()
	{
		if (is_null(self::$_instance)) {
			self::$_instance = new self();
		}

		return self::$_instance;
	}

	/**
	 * 時間の取得
	 * @return float
	 */
	protected function _now()
	{
		list($msec, $sec) = explode(' ', microtime());

		return round(((float)$msec + (float)$sec), 5);
	}

	/**
	 * コンストラクタ
	 */
	protected function __construct()
	{
		$this->_start = $this->_now();
	}

	/**
	 * コンストラクタの起動時間からの差分をコメントつけて取得します。
	 * @param string optional $comment
	 * @return string
	 */
	public function gettime($comment = null)
	{
		$time = round($this->_now() - $this->_start, 5);
		return is_null($comment) ? $time : $comment . ':' . $time;
	}

	/**
	 * @param string optional $comment
	 * @return void
	 */
	public function echoTime($comment = null)
	{
		echo $this->gettime($comment) . '<br />';
	}
}
